3DS ACS API
This section defines the APIs that the ACS calls on the Issuer (CMS) side.
Card Information Inquiry
ACS use cardholder inquiry API to get card information from CMS (card management system).
Request (getCardInfoByCard)
| No. | Field Name | M/O | Data Type | Remark |
|---|---|---|---|---|
| 1 | cardNumber | M | Data Type: String Length: 19 characters | PAN or Card number |
Response
| No. | Name | M/O | Data Type | Remark |
|---|---|---|---|---|
| 1 | statusCode | M | Data Type: String Length: 3 characters | 200 means successful |
| 2 | statusReason | M | Data Type: String Length: 200 characters | Error information if status is failed |
| 3 | cardStatus | M | Data Type: String Length: 64 characters | Status of the card |
| 4 | cardToken | O | Data Type: String Length: 32 characters | CardToken if have |
| 5 | customerId | O | Data Type: String Length: 64 characters | If have |
| 6 | givenName | O | Data Type: String Length: 64 characters | Given name of the customer |
| 7 | middleName | O | Data Type: String Length: 64 characters | Middle name of the customer |
| 8 | surname | O | Data Type: String Length: 64 characters | Surname of the customer |
| 9 | expiryDate | O | Data Type: String Length: 4 characters | Expiry date of the card |
| 10 | email | C | Data Type: String Length: 128 characters | Customer Email |
| 11 | mobileNo | C | Data Type: String Length: 32 characters | Customer mobile number |
| 12 | challengeType | C | Length: 1 character S: SMS OTP E: Email OTP O: OOB | Prefer Challenge Type |
| 13 | allowedTypes | C | Data Type: String Length: 20 character S: SMS OTP E: Email OTP O: OOB | Support Challenge Type Sample: S,E,O |
SMS and Email OTP

Request
| No. | Field Name | M/O | Description | Length | Remark |
|---|---|---|---|---|---|
| 1 | acsTransId | M | Acs Transaction ID | Data Type: String Maximum 36 characters | |
| 2 | customerId | O | Customer unique ID | Data Type: String Maximum 32 characters | |
| 3 | cardToken | M | Card Token | Data Type: String Length: 32 characters | |
| 4 | expiryDate | O | Card Expiry Date | yyMM | |
| 5 | payTokenInd | O | Boolean | ||
| 6 | payTokenSource | O | Data Type: String Maximum 2 characters | ||
| 7 | merchantName | M | Merchant Name | Data Type: String Maximum 64 characters | |
| 8 | purchaseAmount | O | Purchase Transaction Amount | Data Type: String Maximum 48 characters Example: If the purchase amount is USD 123.45, this element will contain the value 12345 | Purchase amount in minor units of currency with all punctuation removed. When used in conjunction with the Purchase Currency Exponent field, proper punctuation can be calculated. |
| 9 | purchaseCurrency | O | Purchase Transaction Currency | Data Type: String Maximum 3 characters | ISO 4217 three-digit currency code |
| 10 | purchaseExponent | O | Minor units of purchase currency | Data Type: String Maximum 1 character Example: • USD = 2 • Yen = 0 | Minor units of currency as specified in the ISO 4217 currency exponent. |
| 11 | otpType | M | Authentication Type Value: S: SMS E: Email | Data Type: String Length: 1 characters | |
| 12 | purchaseDate | O | Purchase transaction time | Data Type: String | In UTC time |
| 13 | otp | M | OTP | Data Type: String Length: 4–6 characters |
Response
HTTP 200 for successful response.
OOB (For Reference Only)
The CMS system or OOB authentication system will provide the API . And following information is only for reference.

OOB Request
Request:
| Field Name | M/O | Description | Length | Remark | |
|---|---|---|---|---|---|
| 1 | acsTransId | M | Acs Transaction ID | Data Type: String Maximum 36 characters | |
| 2 | acquirerBin | O | Acquirer BIN | Data Type: String Maximum 11 characters | |
| 3 | merchantId | O | Acquirer Merchant ID | Data Type: String Maximum 35 characters | |
| 4 | customerId | O | Customer unique ID | Data Type: String Maximum 32 characters | |
| 5 | cardToken | M | CardToken | Data Type: String Maximum 19 characters | |
| 6 | expiryDate | O | Card Expiry Date | yyyyMMdd | |
| 7 | payTokenInd | O | Boolean | ||
| 8 | payTokenSource | O | Data Type: String Maximum 2 characters | ||
| 9 | merchantName | M | Merchant Name | Data Type: String Maximum 64 characters | |
| 10 | purchaseAmount | O | Purchase Transaction Amount | Data Type: String Maximum 48 characters Example: If the purchase amount is USD 123.45,this element will contain the value 12345 | Purchase amount in minor units of currency with all punctuation removed. When used in conjunction with the Purchase Currency Exponent field, proper punctuation can be calculated. |
| 11 | purchaseCurrency | O | Purchase Transaction Currency | Data Type: String Maximum 3 characters | ISO 4217 three-digit currency code |
| 12 | purchaseExponent | O | Minor units of purchase currency | Data Type: String Maximum 1 character Example: • USD = 2 • Yen = 0 | Minor units of currency as specified in the ISO 4217 currency exponent. |
| 13 | purchaseDate | O | Purchase transaction time | Data Type: String | In UTC time |
| 14 | callbackURL | O | Callback URL | Data Type: String Maximum 512 characters | For automatically completion if needed. |
Response:
HTTP 200 for successful response.
OOB Result Verification
Request:
| No. | Field Name | M/O | Data Type | Remark |
|---|---|---|---|---|
| 1 | acsTransId | M | Data Type: String Length: 36 characters | Acs Transaction ID |
| 2 | customerId | M | Data Type: String Length:32 characters | Customer unique ID |
Response:
| No. | Field Name | M/O | Data Type | Remark |
|---|---|---|---|---|
| 1 | acsTransId | M | Data Type: String Length: 36 characters | Acs Transaction ID |
| 2 | authenInd | M | Data Type: String Length:1 character | Y: Success F: Fail O: Timeout P: Processing |
Appendix A — API Request Sample (illustrative)
POST /api/v1/authorize HTTP/1.1
Authorization: Bearer eyJ...
Content-Type: application/jose+json
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwia2lkIjoi...
Appendix B — Token Response Sample (illustrative)
{
"access_token": "eyJhbGciOiJFUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 360000,
"scope": "ACS"
}